給定一個二叉搜索樹 (BST),你的目標是將其轉換為一棵高度平衡的二叉搜索樹。高度平衡的意思是:一棵二叉樹的每個節點的兩棵子樹的高度差不超過 1。
class Solution:
    def balanceBST(self, root: TreeNode) -> TreeNode:
        # Step 1: 中序遍歷,獲取排序後的節點列表
        def inorderTraversal(node):
            if not node:
                return []
            return inorderTraversal(node.left) + [node] + inorderTraversal(node.right)
        
        sorted_nodes = inorderTraversal(root)
        
        # Step 2: 根據排序後的節點列表構建平衡二叉樹
        def buildBalancedBST(nodes):
            if not nodes:
                return None
            mid = len(nodes) // 2
            root = nodes[mid]
            root.left = buildBalancedBST(nodes[:mid])
            root.right = buildBalancedBST(nodes[mid+1:])
            return root
        
        return buildBalancedBST(sorted_nodes)